package mysql8学习.高级.第15章_锁;

/**
 * 1.锁定读
 * 在采用加锁方式解决脏读、不可重复读、 幻读这些问题时，
 * 读取一条记录时需要获取该记录的S锁 ，其实是不严谨的，
 * 有时候需要在读取记录时就获取记录的X锁,来禁止别的事务读写该记录，
 * 为此MySQL提出了两种比较
 * 特殊的SELECT语句格式:
 * .对读取的记录加S锁: //共享锁
 *  SELECT ...  LOCK IN SHARE MODE;//S锁 共享锁
 *  SELECT ...  FOR SHARE;//S锁 共享锁
 *  SELECT ...  FOR UPDATE;//X锁 排他锁
 *
 *
 * MySQL8.0新特性:
 * 在5.7及之前的版本，SELECT .. FOR UPDATE,如果获取不到锁，会一直等待，
 *      直到.innodb_lock_wait_timeout 超时，
 * 在8.0版本中， SELECT ... FOR UPDATE, SELECT .. FOR SHARE
 * 添加 NOWAIT、SKIP LOCKED 语法，跳过锁等待,或者跳过锁定。
 *
 * ● 通过添加 NOWAIT、SKIP LOCKED 语法， 能够立即返回。
 *  如果查询的行已经加锁:
 *      。那么 NOWAIT 会立即报错返回
 *      。而 SKIP LOCKED也会立即返回，只是返回的结果中不包含被锁定的行。
 *
 */
public class C_A1_锁定读 {
}
